# 此文件保留但内容已更新，移除了与Redis缓存相关的中间件
# 如需添加自定义中间件，可以在此文件中定义

import time
import logging
from django.utils.deprecation import MiddlewareMixin

# 设置日志记录器，使用Django默认的日志记录器
logger = logging.getLogger('django')

class ResponseTimeMiddleware(MiddlewareMixin):
    """
    响应时间中间件 - 记录请求处理时间
    用于性能监控，记录每个请求的处理时间
    在响应头中添加X-Response-Time字段，并记录到日志
    """
    
    def process_request(self, request):
        """
        处理请求的方法
        在请求开始时记录时间戳
        
        Args:
            request: HttpRequest对象
        """
        # 设置请求开始时间，记录当前时间戳
        request.start_time = time.time()
    
    def process_response(self, request, response):
        """
        处理响应的方法
        计算请求处理时间，添加到响应头并记录日志
        
        Args:
            request: HttpRequest对象
            response: HttpResponse对象
            
        Returns:
            HttpResponse: 处理后的响应对象
        """
        # 跳过静态文件和管理员页面，不记录这些请求的处理时间
        if 'admin' in request.path or '.' in request.path.split('/')[-1]:
            return response
        
        # 计算响应时间
        if hasattr(request, 'start_time'):
            # 计算从请求开始到现在的时间差(毫秒)
            duration = time.time() - request.start_time
            # 添加响应时间到响应头
            response['X-Response-Time'] = str(round(duration * 1000, 2)) + 'ms'
            
            # 记录到日志，包含路径、请求方法和响应时间
            logger.info(
                f"Path: {request.path}, Method: {request.method}, "
                f"Time: {round(duration * 1000, 2)}ms"
            )
        
        return response 